package projeto;
 
import java.util.*;
 
public class Livro extends Item {
 
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String editora;
    String genero;
    int anoPublicacao;
    boolean ocupado;
    List<Professor> listaDeEspera;
     
    /**
     * Construtor da classe.
     * 
     * @param titulo Titulo do livro.
     * @param autor Autor do livro.
     * @param anoPublicacao Ano de publicacao do livro.
     * @param editora Editora do livro.
     * @throws Exception Para titulo, autor, e editora invalidos, e tambem para ano de publicacao negativo.
     */
     
    public Livro(String titulo, String autor, String editora, int anoPublicacao, String genero) throws Exception{
    	super(titulo,autor);
    	if(titulo.equals(null) || titulo.trim().toLowerCase().equals("")){
            throw new Exception("Nome do titulo do livro invalido.");
        }
        if(autor.equals(null) || autor.trim().toLowerCase().equals("")){
            throw new Exception("Nome do autor do livro invalido.");
        }
        if(editora.equals(null) || editora.trim().toLowerCase().equals("")){
            throw new Exception("Nome da editora do livro invalida.");
        }
        if(anoPublicacao <= 0){
            throw new Exception("Ano de publicacao invalido.");
        }
        if(genero.equals(null) || genero.trim().toLowerCase().equals("")){
            throw new Exception("Nome do genero do livro invalida.");
        } 
        this.editora = editora;
        this.anoPublicacao = anoPublicacao;
        this.genero = genero;
        ocupado = true;
    }
     
    public Livro(String titulo, String autor, String editora, int anoPublicacao) throws Exception {
    	super(titulo,autor);
    	if(titulo.equals(null) || titulo.trim().toLowerCase().equals("")){
            throw new Exception("Nome do titulo do livro invalido.");
        }
        if(autor.equals(null) || autor.trim().toLowerCase().equals("")){
            throw new Exception("Nome do autor do livro invalido.");
        }
        if(editora.equals(null) || editora.trim().toLowerCase().equals("")){
            throw new Exception("Nome da editora do livro invalida.");
        }
        if(anoPublicacao <= 0){
            throw new Exception("Ano de publicacao invalido.");
        }
        this.editora = editora;
        this.anoPublicacao = anoPublicacao;
        
        ocupado = true;
	}

	/**
     * @return Genero do livro.
     */
    public String getGenero() {
        return genero;
    }
     
    /**
     * @return Editora do livro.
     */
    public String getEditora() {
        return editora;
    }
     
    /**
     * @return Ano de publicacao do livro.
     */
    public int getAnoPublicacao() {
        return anoPublicacao;
    }
     
    /**
     * Atualiza o estado do livro.
     * 
     * @param estado Estado atual do livro.
     */
    public void setOcupado(boolean estado){
        this.ocupado = estado;
    }
     
    /**
     * Informa se o livro esta livre ou nao.
     * 
     * @return True para livro ocupado, false para
     */
     
    public boolean getEstado(){
        return ocupado;
    }
     
    @Override
    public String toString(){
        return "Titulo: " + super.getTitulo() + 
                "\nAutor: " + super.getAutor() +
                "\nAno de publicacao: " + getAnoPublicacao() + 
                "\nEditora: " + getEditora() +
                "\nClassificacao media: " + getClassificacao();
    }

	public void setEstado(boolean b) {
		// TODO Auto-generated method stub
		
	}
 
     
}
